package main

import (
	"fmt"
)

// 如命所示， 函数定义 简写一下
// func 函数名(参数) 返回类型 {
// 函数内容
// }

func sum(x int, y int) int {
	return x + y
}

// 传多参
func sum2(x int, y ...int) int {
	for _, v := range y {
		x += v
	}
	return x
}

// go-hzq 允许多个返回值
func calc(x int, y int) (int, int) {
	return x + y, x - y
}

// 定义函数类型:
// 可以做参数直接使用
type calcFunc func(int, int) int

func infunc(a int, b int, c func(int, int) int) int {
	return c(a, b)
}

func main() {
	var a = sum(12, 5)
	fmt.Println(a)

	var d = sum2(12, 5, 6, 7)
	fmt.Println(d)

	var b, c = calc(12, 5)
	fmt.Println(b, c)

	var e calcFunc = sum
	fmt.Println(e(12, 5))

	var f = infunc(12, 5, sum)
	fmt.Println(f)

}
